home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Light ROM 1
/
LIGHT-ROM 1 (Amiga Library Services)(1994).iso
/
ffdisks
/
d875.lha
/
Blanker
/
Source.lha
/
Source
/
winhand.c
< prev
Wrap
C/C++ Source or Header
|
1993-05-24
|
9KB
|
321 lines
/** DoRev Header ** Do not edit! **
*
* Name : winhand.c
* Copyright : Free Software
* Creation date : 12-May-93
* Translator : SAS/C 6.2
* Compiler opts. : See Makefile
*
* Date Rev Author Comment
* --------- --- ------------------- ----------------------------------------
* 22-May-93 1 Michael D. Bayne Removed mouse blanker
* 12-May-93 0 Michael D. Bayne Gadget/window handling for Blanker
*
*** DoRev End **/
#include <exec/types.h>
#include <exec/memory.h>
#include <intuition/intuition.h>
#include <libraries/gadtools.h>
#include <libraries/commodities.h>
#include <libraries/reqtools.h>
#include <graphics/displayinfo.h>
#include <dos/dos.h>
#include <dos/dostags.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/commodities_protos.h>
#include <clib/graphics_protos.h>
#include <clib/reqtools_protos.h>
#include <clib/alib_protos.h>
#include <clib/dos_protos.h>
#include "defs.h"
#include "Blanker.h"
LONG UpdateCX( void );
void getInfo( UBYTE * );
LONG getBlanker( void );
extern struct Task *bTask, *Task;
extern struct Window *BlankerWnd;
extern struct MsgPort *blankerPort, *modulePort;
extern struct bMessage bMsg;
extern struct Gadget *BlankerGadgets[];
extern struct bPrefObject bPrefs;
extern CxObj *bBroker, *pHotKey, *bHotKey;
extern ULONG validPrefs;
UBYTE prefName[108] = "Blanker.prefs", prefDir[108] = "SYS:Prefs/Presets", modInfo[64];
void setPrefs( struct bPrefObject *cP, UBYTE gad )
{
struct NameInfo sInf;
if(( gad == GD_TOUT )||( gad == Blanker_CNT ))
GT_SetGadgetAttrs( BlankerGadgets[GD_TOUT], BlankerWnd, 0L, GTIN_Number, (cP->bTimeout)/10, 0L );
if(( gad == GD_PKEY )||( gad == Blanker_CNT ))
GT_SetGadgetAttrs( BlankerGadgets[GD_PKEY], BlankerWnd, 0L, GTST_String, cP->pKey, 0L );
if(( gad == GD_BKEY )||( gad == Blanker_CNT ))
GT_SetGadgetAttrs( BlankerGadgets[GD_BKEY], BlankerWnd, 0L, GTST_String, cP->bKey, 0L );
if(( gad == GD_MDISPLAY )||( gad == Blanker_CNT )) {
if( GetDisplayInfoData( 0l, ( UBYTE * )&sInf, sizeof( struct NameInfo ), DTAG_NAME, cP->sMod ))
GT_SetGadgetAttrs( BlankerGadgets[GD_MDISPLAY], BlankerWnd, NULL, GTTX_Text, sInf.Name, NULL );
else GT_SetGadgetAttrs( BlankerGadgets[GD_MDISPLAY], BlankerWnd, NULL, GTTX_Text, "No Monitor Info", NULL );
GT_SetGadgetAttrs( BlankerGadgets[GD_SDEP], BlankerWnd, NULL, GTNM_Number, 1<<(cP->sDep), 0L );
}
if(( gad == GD_MODINFO )||( gad == Blanker_CNT ))
GT_SetGadgetAttrs( BlankerGadgets[GD_MODINFO], BlankerWnd, NULL, GTTX_Text, modInfo, NULL );
if( gad == Blanker_CNT )
GT_SetGadgetAttrs( BlankerGadgets[GD_MEMRES], BlankerWnd, 0L, GTCY_Active, bPrefs.resident, TAG_END );
}
void loadPrefs( char *name, char *dir, struct bPrefObject *bPO )
{
char path[256];
BPTR prefFile;
CopyMem( dir, path, 108 );
if(( AddPart( path, name, 256 ))&&( prefFile = Open( path, MODE_OLDFILE ))) {
if( FRead( prefFile, bPO, 1, sizeof( struct bPrefObject )) == sizeof( struct bPrefObject ))
validPrefs = 1;
else {
rtEZRequest( "Error reading prefs file.", "OK", 0L, 0L, DEF_TAGS );
validPrefs = 0;
}
Close( prefFile );
} else rtEZRequest( "Could not open prefs file.", "OK", 0L, 0L, DEF_TAGS );
}
void savePrefs( char *name, char *dir, struct bPrefObject *bPO )
{
char path[256];
BPTR prefFile;
CopyMem( dir, path, 108 );
if(( AddPart( path, name, 256 ))&&( prefFile = Open( path, MODE_NEWFILE ))) {
FWrite( prefFile, bPO, 1, sizeof( struct bPrefObject ));
Close( prefFile );
} else rtEZRequest( "Could not open prefs file.", "OK", 0L, 0L, DEF_TAGS );
}
void defBlanker( void )
{
struct Screen *Scr;
UWORD CTable[] = { 0x0222, 0x0AAA, 0x0AAA };
bTask = Task;
Scr = OpenScreenTags( 0l, SA_DisplayID, bPrefs.sMod, SA_Depth, 1, SA_Quiet, TRUE, SA_Overscan,
OSCAN_STANDARD, TAG_DONE );
LoadRGB4( &(Scr->ViewPort), CTable, 2 );
Wait( SIGBREAKF_CTRL_C );
CloseScreen( Scr );
}
int TOUTClicked( void )
{
bPrefs.bTimeout = 10*(((struct StringInfo*)(BlankerGadgets[GD_TOUT])->SpecialInfo)->LongInt);
return( UpdateCX() );
}
int BKEYClicked( void )
{
CopyMem( ((struct StringInfo *)(BlankerGadgets[GD_BKEY])->SpecialInfo )->Buffer, bPrefs.bKey, 256 );
return( UpdateCX() );
}
int PKEYClicked( void )
{
CopyMem( ((struct StringInfo *)(BlankerGadgets[GD_PKEY])->SpecialInfo )->Buffer, bPrefs.pKey, 256 );
return( UpdateCX() );
}
int HIDEClicked( void )
{
return( CLOSEWIN );
}
int SAVEClicked( void )
{
savePrefs( "Blanker.prefs", "ENVARC:", &bPrefs );
savePrefs( "Blanker.prefs", "ENV:", &bPrefs );
return( OK );
}
int QUITClicked( void )
{
return( QUIT );
}
int SMODEClicked( void )
{
struct rtScreenModeRequester *smRequest;
if( smRequest = rtAllocRequestA( RT_SCREENMODEREQ, 0l )) {
rtChangeReqAttr( smRequest, RTSC_DisplayID, bPrefs.sMod, RTSC_DisplayDepth, bPrefs.sDep, TAG_END );
if( rtScreenModeRequest( smRequest, "Screen Mode", RTSC_Flags, SCREQF_DEPTHGAD|SCREQF_NONSTDMODES,
DEF_TAGS )) {
bPrefs.sDep = smRequest->DisplayDepth;
bPrefs.sMod = smRequest->DisplayID;
setPrefs( &bPrefs, GD_MDISPLAY );
}
rtFreeRequest( smRequest );
} else
rtEZRequestTags( "Not enough memory to allocate\nscreen mode requester.", "OK", 0l, 0l, DEF_TAGS );
return( OK );
}
int MEMRESClicked( void )
{
if( modulePort ) {
bMsg.bm_Type = BM_UNLOAD;
PutMsg( modulePort, ( struct Message * )( &bMsg ));
WaitPort( blankerPort );
GetMsg( blankerPort );
modulePort = 0l;
}
bPrefs.resident = BlankerMsg.Code;
return( OK );
}
int BMODClicked( void )
{
APTR lock = rtLockWindow( BlankerWnd );
if( getBlanker()) {
if( bPrefs.resident ) bMsg.bm_Type = BM_PREFS;
else bMsg.bm_Type = BM_PREFS|BM_QUIT;
bMsg.bm_Valid = validPrefs;
bMsg.prefData = bPrefs.prefData;
PutMsg( modulePort, ( struct Message * )( &bMsg ));
WaitPort( blankerPort );
GetMsg( blankerPort );
if( !bPrefs.resident ) modulePort = 0l;
validPrefs = 1;
} else rtEZRequest( "No module loaded.", "Ok", 0L, 0L, DEF_TAGS );
rtUnlockWindow( BlankerWnd, lock );
return( OK );
}
int LMODClicked( void )
{
return( BlankerLoadMod());
}
int BlankerOpen( void )
{
struct rtFileRequester *fRequest;
if( fRequest = rtAllocRequest( RT_FILEREQ, 0L )) {
rtChangeReqAttr( fRequest, RTFI_Dir, prefDir, RTFI_MatchPat, "#?.prefs", TAG_END );
if( rtFileRequest( fRequest, prefName, "Please choose prefs file...", RTFI_Flags, FREQF_PATGAD,
DEF_TAGS )) {
loadPrefs( prefName, fRequest->Dir, &bPrefs );
setPrefs( &bPrefs, Blanker_CNT );
UpdateCX();
}
} else rtEZRequestTags( "Couldn't allocate file requester.", "Ok", 0L, 0L, DEF_TAGS );
return( OK );
}
int BlankerSaveAs( void )
{
struct rtFileRequester *fRequest;
if( fRequest = rtAllocRequest( RT_FILEREQ, 0L )) {
rtChangeReqAttr( fRequest, RTFI_Dir, prefDir, RTFI_MatchPat, "#?.prefs", TAG_END );
if( rtFileRequest( fRequest, prefName, "Please choose a save file...", RTFI_Flags,
FREQF_SAVE|FREQF_PATGAD, DEF_TAGS )) savePrefs( prefName, fRequest->Dir, &bPrefs );
} else rtEZRequestTags( "Couldn't allocate file requester.", "Ok", 0L, 0L, DEF_TAGS );
return( OK );
}
int BlankerAbout( void )
{
rtEZRequestTags( BVERSION"\nby Michael D. Bayne", "Ok", 0L, 0L, DEF_TAGS );
return( OK );
}
int BlankerLoadMod( void )
{
struct rtFileRequester *fRequest;
if( modulePort ) {
bMsg.bm_Type = BM_UNLOAD;
PutMsg( modulePort, ( struct Message * )( &bMsg ));
WaitPort( blankerPort );
GetMsg( blankerPort );
modulePort = 0l;
}
if( fRequest = rtAllocRequest( RT_FILEREQ, 0L )) {
rtChangeReqAttr( fRequest, RTFI_Dir, bPrefs.modDir, TAG_END );
if( rtFileRequest( fRequest, bPrefs.modName, "Please choose blanker module...", RTFI_Flags,
FREQF_PATGAD, DEF_TAGS )) {
CopyMem( fRequest->Dir, bPrefs.modDir, 108 );
validPrefs = 0;
getInfo( modInfo );
setPrefs( &bPrefs, GD_MODINFO );
}
} else rtEZRequestTags( "Couldn't allocate file requester.", "Ok", 0L, 0L, DEF_TAGS );
return( OK );
}
int BlankerQuit( void )
{
return( QUIT );
}
int BlankerLSaved( void )
{
loadPrefs( "Blanker.prefs", "ENVARC:", &bPrefs );
setPrefs( &bPrefs, Blanker_CNT );
UpdateCX();
return( OK );
}
int BlankerCloseWindow( void )
{
return( CLOSEWIN );
}
int BlankerVanillaKey( void )
{
switch( BlankerMsg.Code ) {
case 'c':
return( SMODEClicked() );
case 'r':
return( BMODClicked() );
case 'l':
return( BlankerLoadMod());
case 'm':
GT_SetGadgetAttrs( BlankerGadgets[GD_MEMRES], BlankerWnd, 0L, GTCB_Checked,
bPrefs.resident = !bPrefs.resident, TAG_END );
return( OK );
case 't':
ActivateGadget( BlankerGadgets[GD_TOUT], BlankerWnd, 0l );
return( OK );
case 'b':
ActivateGadget( BlankerGadgets[GD_BKEY], BlankerWnd, 0l );
return( OK );
case 'p':
ActivateGadget( BlankerGadgets[GD_PKEY], BlankerWnd, 0l );
return( OK );
case 'h':
return( HIDEClicked() );
case 's':
return( SAVEClicked() );
case 'q':
return( QUIT );
default:
return( OK );
}
}